// index.js
const cloud = require('wx-server-sdk');

// 🟩 初始化一次，全局生效，其他模块自动共享这个环境配置
cloud.init({
  env: 'cloud1-6g22e569b6b129d5'
});

// 可以在这里获取 cloud.database() 或在其他文件 require 后使用
const db = cloud.database();

const submitHandler = require('./handlers/submitHandler');
const queryHandler = require('./handlers/queryHandler');
const refreshHandler = require('./handlers/refreshHandler');
const listHandler = require('./handlers/listHandler');
const monitorHandler = require('./handlers/monitorHandler');

const handlers = {
  submit: submitHandler,  // 提交任务业务
  query: queryHandler,    // 查询单个任务业务
  refresh: refreshHandler, // 刷新单个任务业务
  list: listHandler, // 任务列表查询
  monitor: monitorHandler // 长期监控（由定时触发器调用）
};

exports.main = async (event, context) => {
  const {action} = event;
  const handler = handlers[action];
  if (!handler) {
    return { success: false, error: `Unknown action: ${action}` };
  }

  const {
    OPENID
  } = cloud.getWXContext();

  try {
    switch (action) {
      case 'submit':
        // // 兼容两种参数格式：data 和 taskData
        // const submitData = data || taskData;
        // // 使用前端传递的userId，如果没有则使用OPENID
        // const userId = event.userId || OPENID;
        // return await submitTask(submitData, userId);
        return await submitHandler(event, OPENID);
      case 'query':
        // // 兼容两种参数格式：data.taskId 或直接 taskId
        // const queryData = data || restParams;
        // const queryUserId = event.userId || OPENID;
        // return await queryTask(queryData, queryUserId);
        return await queryHandler(event, OPENID);
      case 'refresh':
        // 刷新任务状态
        // const refreshData = data || restParams;
        // const refreshResult = await refreshOneTask(refreshData.taskId);
        // return refreshResult;
        return await refreshHandler(event, OPENID)
      case 'list':
        // 对于list操作，参数可能直接在event根级别，也可能在data中
        // const listParams = data || restParams;
        // const listUserId = event.userId || OPENID;
        // return await listTasks(listParams, listUserId);
        return await listHandler(event, OPENID)
      case 'monitor':
        // 长期监控，由定时触发器调用
        return await monitorHandler(event, context);
      default:
        throw new Error('Unknown action');
    }
  } catch (error) {
    console.error('Cloud function error:', error);
    return {
      success: false,
      error: error.message
    };
  }

  // try {
  //   return await handler(event, cloud.getWXContext());
  // } catch (err) {
  //   console.error('Handler error:', err);
  //   return { success: false, error: err.message };
  // }
};